<?php
/**
 * 说明，配置文件一要单独放在一个目录中，比如includes
 *
 * 还需要加上类的自动引导函数auto_load
 *
 * File name: config.inc.php
 * Created by: Ford
 * Contact: zhang.ford@gmail.com
 * User: ford
 * Create Date: 14-9-5
 * Create Time: 上午11:28
 * Last Modified: 2014-09-05
 *
 * 本文件做了以下几个事情：
 * -把网站的配置集中在一个文件中
 * -将URL和URI定义为常量
 * -设置如何处理错误
 * -还可用于创建用户自定义函数，建立站点范围内的设置
 */

# ****************************** #
# ************配置************** #

//错误被发送到这儿
$contact_email = 'zhang.ford@gmail.com';

//确定我们是在本地服务器上运行还是在一个真实的服务器上
$host = substr($_SERVER['HTTP_HOST'], 0, 5);
if(in_array($host, array('local', '192.1', '127.0')))
{
	$local = true;
}
else
{
	$local = false;
}

//确定文件位置和网站的URL
//允许在不同服务器上开发
if($local)
{
	//如果在是本地运行，应当打开调试开关
	$debug = true;

	//定义本定访问的位置和链接
	//BASE_URI，网站根目录在服务器上的绝对路径
	define('BASE_URI', '/srv/www/htdocs/notebook/');
	define('BASE_URL', 'http://localhost/notebook/');

	//定义数据库链接
	define('DB', '/srv/www/mysql.inc.php');		//网站目录之外的其它路径即可

}
else
{
	//如果在真实的服务器上运行
	define('BASE_URI', '/path/to/live/html/folder/');	//定义在服务器上的绝对路径
	define('BASE_URL', 'http://www.example.com/');
	define('DB', '/path/to/live/mysql.inc.php');	//这个文件最好在Web目录之外
}

/**
 * 最重要的设置!
 * $debug变量和于设置错误管理
 * 要调试一个特定的页面，可在（模块的）index.php中加入以下内容：
 * if($p == 'thismodule') $debug = true;
 * require('./include/config.inc.php');
 *
 * 要对在线网站进行测试，只需要在包含本配置文件之前插入下面这行将$debug设置为true即可
 * $debug = true;
 *
 */

//假定debug被关闭
if(!isset($debug))
{
	$debug = false;
}

# ************配置*********** #
# ************************** #

# *************************** #
# ***********错误管理********* #
//创建一个处理函数
/**
 * 自定义的错误处理函数
 * @param $e_number 错误编号
 * @param $e_message 错误消息
 * @param $e_file 错误发生的文件
 * @param $e_line 错误所在行
 * @param $e_vars 错误变量
 */
function my_error_handler($e_number, $e_message, $e_file, $e_line, $e_vars)
{
	global $debug, $contact_email;

	//创建错误消息内容
	$message = "在 $e_file 文件的第 $e_line 行发生错误： $e_message";

	$message .= print_r($e_vars, 1);

	if($debug)		//显示错误消息
	{
		echo '<div class="error">'.$message.'</div>';
		debug_print_backtrace();
	}
	else
	{
		//将错误写入日志
		error_log($message, 1, $contact_email);		//发送Email

		//如果错误不是一个提醒或者很严重，显示错误提示
		if(($e_number != E_NOTICE) && ($e_number < 2048))
		{
			echo '<div class="error">发生了一个系统错误，抱歉给你带来不便。</div>';
		}
	}

}

//启用自定义错误控制器
set_error_handler('my_error_handler');

# ***********错误管理********* #
# *************************** #